/**
在Node.js中，服务器设置Cookie的过程通常涉及到使用HTTP响应头中的 `Set-Cookie` 字段
  1. 什么是服务器Cookie设置？
  服务器Cookie设置是指服务器通过HTTP响应向客户端（浏览器）发送Cookie信息，以便客户端在后续请求中携带这些Cookie。这样可以实现用户会话管理、数据跟踪等功能。
  2. 使用Node.js设置Cookie的基本步骤
   1. 创建HTTP服务器
  使用Node.js的 `http` 模块创建一个基本的HTTP服务器。
  const http = require('http');

  const server = http.createServer((req, res) => {
      // 设置Cookie的逻辑将放在这里
  });
   2. 使用 `Set-Cookie` 设置Cookie
  在响应头中使用 `Set-Cookie` 字段来设置Cookie。可以设置多个属性，如过期时间、路径、域名和安全标志等。
  res.setHeader('Set-Cookie', 'username=JohnDoe; Max-Age=3600; HttpOnly; Path=/');
  -  `username=JohnDoe` : Cookie的名称和值。
  -  `Max-Age=3600` : Cookie的有效期为3600秒（1小时）。
  -  `HttpOnly` : 设置后，客户端JavaScript无法访问该Cookie，提高安全性。
  -  `Path=/` : 指定Cookie的有效路径。

   3. 发送响应
  在设置完Cookie后，发送HTTP响应给客户端。
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Cookie has been set');
  3. 完整示例代码

  以下是一个完整的Node.js示例，展示了如何设置Cookie：
  const http = require('http');

  const server = http.createServer((req, res) => {
      // 设置Cookie
      res.setHeader('Set-Cookie', 'username=JohnDoe; Max-Age=3600; HttpOnly; Path=/');
      
      // 发送响应
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Cookie has been set');
  });

  server.listen(3000, () => {
      console.log('Server is running on http://localhost:3000');
  });
  4. 注意事项
  - 安全性: 在设置Cookie时，考虑使用 `Secure` 标志以确保Cookie仅通过HTTPS协议传输。
  - HttpOnly: 使用 `HttpOnly` 标志可以防止JavaScript访问Cookie，降低XSS攻击的风险。
  - 过期时间: 可以使用 `Expires` 或 `Max-Age` 来设置Cookie的有效期。
  - 多个Cookie: 可以在响应头中设置多个 `Set-Cookie` 字段，以传递多个Cookie。

  以上是关于Node.js中服务器Cookie设置的总结，希望对你有所帮助！
 */
const Koa = require("koa");
const KoaRouter = require("@koa/router");

const app = new Koa();
const userRouter = new KoaRouter({ prefix: "/users" });

/**
 * 1.服务器设置cookie
 * 2.客户端(浏览器)保存cookie
 * 3.在同一个作用域下访问服务器, 自动携带cookie
 * 4.服务器验证客户端携带的cookie
 */
userRouter.get("/login", (ctx, next) => {
  ctx.cookies.set("slogan", "cookie-content", {
    maxAge: 60 * 1000 * 3, // 3分钟
  });

  ctx.body = "登录成功";
});

userRouter.get("/list", (ctx, next) => {
  const value = ctx.cookies.get("slogan");
  if (value === "cookie-content") {
    ctx.body = "user list";
  } else {
    ctx.body = "请先登录";
  }
});

app.use(userRouter.routes());
app.use(userRouter.allowedMethods());

app.listen(8000, () => {
  console.log("Server is running on http://localhost:8000");
});
